package org.dinqy;

/**
 * @author armandino (at) gmail.com
 */
public final class OrderClauseBean implements ClauseBean, JPQLSyntax {
    private final ClauseType clauseType;
    private final String fieldName;
    
    OrderClauseBean(ClauseType clauseType, String fieldName) {
        this.clauseType = clauseType;
        this.fieldName = fieldName;
    }
    
    public ClauseType getClauseType() {
        return clauseType;
    }
    
    public void accept(ClauseBeanVisitor visitor) {
        visitor.visit(this);
    }
    
    public String toJPQL() {
        final String ascOrDesc = clauseType.name().toLowerCase();
        final StringBuilder sb = new StringBuilder();
        sb.append("order by obj.")
            .append(fieldName)
            .append(" ")
            .append(ascOrDesc);
        return sb.toString();
    }
    
}
